import { defineStore } from 'pinia'
import {reactive, toRefs} from 'vue'

// 你可以对 `defineStore()` 的返回值进行任意命名，但最好使用 store 的名字，同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`，`useCartStore`，`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useBaseStore = defineStore('base', () => {
  const baseState = reactive({
    token: 'abcdef',
    userInfo: {
      name: 'gold3',
      age: 18
    }
  })

  const setToken = (token) => {
    baseState.token = token
  }

  return { ...toRefs(baseState), setToken }
}, {
  // 持久化
  persist: {
    enabled: true, // 开关
    strategies: [
      {
        // 修改存储中使用的键名称，默认为当前 Store的 id
        key: 'token',
        // 修改为 sessionStorage，默认为 localStorage
        storage: localStorage,
        // 部分持久化状态的点符号路径数组，[]意味着没有状态被持久化(默认为undefined，持久化整个状态)
        paths: ['baseState.token']
      }
    ]
  }
})
